home *** CD-ROM | disk | FTP | other *** search
/ HTBasic 9.3 / HTBasic 9.3.iso / LgcyPlus / disk2 / CHAMBER._ / CHAMBER.
Encoding:
Text File  |  2001-03-02  |  16.7 KB  |  348 lines

  1. 10    !  ********************************************************
  2. 20    !  Example: Environmental Chamber
  3. 30    !
  4. 40    !  This program shows how a user can build a custom display
  5. 50    !  panel. This program uses a strip chart, labels, menus,
  6. 60    !  dialog box, buttons, string input, and meters to simulate
  7. 70    !  a temperature/humidity chamber that can be programmed for
  8. 80    !  different temperature/humidity profiles.
  9. 90    !
  10. 100   !  *********************************************************
  11. 110   !
  12. 120   REAL Points(0:1)
  13. 130   DIM Buf$[100]
  14. 140   DIM Btn$(1:1,1:3)[80]
  15. 150   DIM Time(50),Temp(50),Humid(50),Ramp(50)
  16. 160   Btn$(1,1)="Options, Temperature"
  17. 170   Btn$(1,2)="Options, Humidity"
  18. 180   Btn$(1,3)="Options, Profile Manager"
  19. 190 Logimage: IMAGE #,K,K,K,K,K,DDDD.D,K,DDD.D
  20. 200 Logimage2: IMAGE #,K,DDDD,K,DDDD.D,K,DDD.D,K,DDD
  21. 210   !
  22. 220   ASSIGN @Main TO WIDGET "PANEL";SET ("X":0,"Y":0,"WIDTH":600,"HEIGHT":425,"TITLE":" Example: Environmental Chamber","SIZE CONTROL":"RESIZE CHILDREN")
  23. 230   CONTROL @Main;SET ("SYSTEM MENU":"Quit")
  24. 240   ON EVENT @Main,"SYSTEM MENU" GOTO Finis
  25. 250   !
  26. 260   ASSIGN @Pulldown1 TO WIDGET "PULLDOWN MENU";PARENT @Main,SET ("LABEL":"Chart","SENSITIVE":0)
  27. 270   ASSIGN @Pd_btn1 TO WIDGET "MENU BUTTON";PARENT @Pulldown1,SET ("LABEL":"Temperature")
  28. 280   ASSIGN @Pd_btn2 TO WIDGET "MENU BUTTON";PARENT @Pulldown1,SET ("LABEL":"Humidity")
  29. 290   ASSIGN @Pd_btn3 TO WIDGET "MENU BUTTON";PARENT @Pulldown1,SET ("LABEL":"Profile Manager")
  30. 300   ASSIGN @Pulldown2 TO WIDGET "PULLDOWN MENU";PARENT @Main,SET ("LABEL":"Operation","SENSITIVE":0)
  31. 310   ASSIGN @Pd_btn4 TO WIDGET "MENU BUTTON";PARENT @Pulldown2,SET ("LABEL":"Manual")
  32. 320   ASSIGN @Pd_cscd TO WIDGET "CASCADE MENU";PARENT @Pulldown2,SET ("LABEL":"Automatic")
  33. 330   ASSIGN @Pd_btn5 TO WIDGET "MENU BUTTON";PARENT @Pd_cscd,SET ("LABEL":"(Re)start")
  34. 340   ASSIGN @Pd_btn6 TO WIDGET "MENU BUTTON";PARENT @Pd_cscd,SET ("LABEL":"Continue")
  35. 350   !
  36. 360   ON EVENT @Pd_btn1,"ACTIVATED" GOSUB Btn1
  37. 370   ON EVENT @Pd_btn2,"ACTIVATED" GOSUB Btn2
  38. 380   ON EVENT @Pd_btn3,"ACTIVATED" GOSUB Btn3
  39. 390   ON EVENT @Pd_btn4,"ACTIVATED" GOSUB Btn4
  40. 400   ON EVENT @Pd_btn5,"ACTIVATED" GOSUB Btn5
  41. 410   ON EVENT @Pd_btn6,"ACTIVATED" GOSUB Btn6
  42. 420   !
  43. 430   !  Create the widgets for the temperature profile.
  44. 440   !
  45. 450   ASSIGN @Main1 TO WIDGET "PANEL";PARENT @Main,SET ("X":0,"Y":0,"WIDTH":600,"HEIGHT":279,"BORDER":0,"VISIBLE":0,"SIZE CONTROL":"RESIZE CHILDREN")
  46. 460   ASSIGN @Strip TO WIDGET "STRIPCHART";PARENT @Main1,SET ("X":5,"Y":5,"WIDTH":350,"HEIGHT":250,"SHOW NUMBERING":0)
  47. 470   ASSIGN @Lbl0 TO WIDGET "LABEL";PARENT @Main1,SET ("X":5,"Y":260,"WIDTH":350,"HEIGHT":20,"BORDER":0,"VALUE":"Event History -- Temperature")
  48. 480   ASSIGN @Lbl1 TO WIDGET "LABEL";PARENT @Main1,SET ("X":365,"Y":15,"WIDTH":120,"HEIGHT":20,"BORDER":0,"VALUE":"Curr Temp")
  49. 490   ASSIGN @Disp1 TO WIDGET "METER";PARENT @Main1,SET ("X":365,"Y":35,"WIDTH":120,"HEIGHT":150,"MINIMUM":-75,"MAXIMUM":+75)
  50. 500   ASSIGN @Lbl2 TO WIDGET "LABEL";PARENT @Main1,SET ("X":365,"Y":200,"WIDTH":120,"HEIGHT":20,"BORDER":0,"VALUE":"Set Point")
  51. 510   ASSIGN @Disp2 TO WIDGET "LABEL";PARENT @Main1,SET ("X":365,"Y":220,"WIDTH":120,"HEIGHT":25)
  52. 520   ASSIGN @Slider TO WIDGET "SLIDER";PARENT @Main1,SET ("X":505,"Y":5,"HEIGHT":250,"WIDTH":60,"MINIMUM":-50,"MAXIMUM":50)
  53. 530   !
  54. 540   ! Set up the strip chart
  55. 550   !
  56. 560   CONTROL @Strip;SET ("CURRENT AXIS":"Y","TICK SPACING":10,"ORIGIN":-50,"RANGE":100)
  57. 570   CONTROL @Strip;SET ("CURRENT AXIS":"X","RANGE":20)
  58. 580   CONTROL @Disp1;SET ("LOW LIMIT":-45,"HIGH LIMIT":+45,"ALARM RANGES":"LOW,HIGH")
  59. 590   STATUS @Disp1;RETURN ("LOW PEN":Low_pen,"HIGH PEN":High_pen)
  60. 600   CONTROL @Disp1;SET ("LOW PEN":High_pen,"MIDDLE PEN":Low_pen)
  61. 610   !
  62. 620   ! Create the widgets for the humidity profile
  63. 630   !
  64. 640   ASSIGN @Main2 TO WIDGET "PANEL";PARENT @Main,SET ("X":0,"Y":0,"WIDTH":600,"HEIGHT":279,"VISIBLE":0,"SIZE CONTROL":"RESIZE CHILDREN")
  65. 650   ASSIGN @Strip2 TO WIDGET "STRIPCHART";PARENT @Main2,SET ("X":5,"Y":5,"WIDTH":350,"HEIGHT":250,"SHOW NUMBERING":0)
  66. 660   ASSIGN @Lbl02 TO WIDGET "LABEL";PARENT @Main2,SET ("X":5,"Y":260,"WIDTH":350,"HEIGHT":20,"BORDER":0,"VALUE":"Event History -- Humidity")
  67. 670   ASSIGN @Lbl12 TO WIDGET "LABEL";PARENT @Main2,SET ("X":365,"Y":15,"WIDTH":120,"HEIGHT":20,"BORDER":0,"VALUE":"Curr Humidity")
  68. 680   ASSIGN @Disp12 TO WIDGET "METER";PARENT @Main2,SET ("X":365,"Y":35,"WIDTH":120,"HEIGHT":150,"MINIMUM":0)
  69. 690   ASSIGN @Lbl22 TO WIDGET "LABEL";PARENT @Main2,SET ("X":365,"Y":200,"WIDTH":120,"HEIGHT":20,"BORDER":0,"VALUE":"Set Point")
  70. 700   ASSIGN @Disp22 TO WIDGET "LABEL";PARENT @Main2,SET ("X":365,"Y":220,"WIDTH":120,"HEIGHT":25)
  71. 710   ASSIGN @Slider2 TO WIDGET "SLIDER";PARENT @Main2,SET ("X":505,"Y":5,"HEIGHT":250,"WIDTH":60)
  72. 720   !
  73. 730   ! Set up the strip chart
  74. 740   !
  75. 750   CONTROL @Strip2;SET ("CURRENT AXIS":"Y","TICK SPACING":10,"ORIGIN":0,"RANGE":100)
  76. 760   CONTROL @Strip2;SET ("CURRENT AXIS":"X","RANGE":20)
  77. 770   CONTROL @Disp12;SET ("LOW LIMIT":5,"HIGH LIMIT":95,"ALARM RANGES":"LOW,HIGH")
  78. 780   STATUS @Disp12;RETURN ("LOW PEN":Low_pen,"HIGH PEN":High_pen)
  79. 790   CONTROL @Disp12;SET ("LOW PEN":High_pen,"MIDDLE PEN":Low_pen)
  80. 800   !
  81. 810   ! Create widgets for profile manager
  82. 820   !
  83. 830   ASSIGN @Main3 TO WIDGET "PANEL";PARENT @Main,SET ("X":0,"Y":0,"WIDTH":600,"HEIGHT":279,"BORDER":0,"VISIBLE":0,"SIZE CONTROL":"RESIZE CHILDREN")
  84. 840   ASSIGN @Lbl3 TO WIDGET "LABEL";PARENT @Main3,SET ("X":255,"Y":200,"WIDTH":90,"HEIGHT":20,"BORDER":0,"VALUE":"Low Limit")
  85. 850   ASSIGN @Lbl4 TO WIDGET "LABEL";PARENT @Main3,SET ("X":255,"Y":230,"WIDTH":90,"HEIGHT":20,"BORDER":0,"VALUE":"High Limit")
  86. 860   ASSIGN @Meter1 TO WIDGET "METER";PARENT @Main3,SET ("X":345,"Y":35,"WIDTH":120,"HEIGHT":150,"MINIMUM":-75,"MAXIMUM":+75)
  87. 870   ASSIGN @Meter2 TO WIDGET "METER";PARENT @Main3,SET ("X":465,"Y":35,"WIDTH":120,"HEIGHT":150,"MINIMUM":0)
  88. 880   ASSIGN @Lmeter1 TO WIDGET "LABEL";PARENT @Main3,SET ("X":345,"Y":15,"WIDTH":120,"HEIGHT":20,"BORDER":0,"VALUE":"Curr Temp")
  89. 890   ASSIGN @Lmeter2 TO WIDGET "LABEL";PARENT @Main3,SET ("X":465,"Y":15,"WIDTH":120,"HEIGHT":20,"BORDER":0,"VALUE":"Curr Humidity")
  90. 900   ASSIGN @Temp_low TO WIDGET "NUMBER";PARENT @Main3,SET ("X":345,"Y":200,"WIDTH":120,"HEIGHT":20,"REAL NOTATION":"FIXED","REAL RESOLUTION":1)
  91. 910   ASSIGN @Temp_high TO WIDGET "NUMBER";PARENT @Main3,SET ("X":345,"Y":230,"WIDTH":120,"HEIGHT":20,"REAL NOTATION":"FIXED","REAL RESOLUTION":1)
  92. 920   ASSIGN @Humid_low TO WIDGET "NUMBER";PARENT @Main3,SET ("X":465,"Y":200,"WIDTH":120,"HEIGHT":20,"REAL NOTATION":"FIXED","REAL RESOLUTION":1)
  93. 930   ASSIGN @Humid_high TO WIDGET "NUMBER";PARENT @Main3,SET ("X":465,"Y":230,"WIDTH":120,"HEIGHT":20,"REAL NOTATION":"FIXED","REAL RESOLUTION":1)
  94. 940   ASSIGN @Time TO WIDGET "NUMBER";PARENT @Main3,SET ("X":10,"Y":50,"WIDTH":75,"HEIGHT":20,"REAL NOTATION":"FIXED","REAL RESOLUTION":1)
  95. 950   ASSIGN @Temp TO WIDGET "NUMBER";PARENT @Main3,SET ("X":95,"Y":50,"WIDTH":50,"HEIGHT":20,"REAL NOTATION":"FIXED","REAL RESOLUTION":1)
  96. 960   ASSIGN @Humid TO WIDGET "NUMBER";PARENT @Main3,SET ("X":155,"Y":50,"WIDTH":50,"HEIGHT":20,"REAL NOTATION":"FIXED","REAL RESOLUTION":1)
  97. 970   ASSIGN @Slope TO WIDGET "NUMBER";PARENT @Main3,SET ("X":215,"Y":50,"WIDTH":50,"HEIGHT":20,"REAL NOTATION":"FIXED","REAL RESOLUTION":1)
  98. 980   ASSIGN @Save_me TO WIDGET "PUSHBUTTON";PARENT @Main3,SET ("X":275,"Y":50,"WIDTH":60,"HEIGHT":24,"LABEL":"Set","BORDER":0)
  99. 990   ASSIGN @Kill_me TO WIDGET "PUSHBUTTON";PARENT @Main3,SET ("X":275,"Y":80,"WIDTH":60,"HEIGHT":24,"LABEL":"Clear","BORDER":0)
  100. 1000  ASSIGN @Time_disp TO WIDGET "LABEL";PARENT @Main3,SET ("X":10,"Y":30,"WIDTH":75,"HEIGHT":20,"VALUE":"Time")
  101. 1010  ASSIGN @Temp_disp TO WIDGET "LABEL";PARENT @Main3,SET ("X":95,"Y":30,"WIDTH":50,"HEIGHT":20,"VALUE":"Temp")
  102. 1020  ASSIGN @Humid_disp TO WIDGET "LABEL";PARENT @Main3,SET ("X":155,"Y":30,"WIDTH":50,"HEIGHT":20,"VALUE":"Humid")
  103. 1030  ASSIGN @Ramp_disp TO WIDGET "LABEL";PARENT @Main3,SET ("X":215,"Y":30,"WIDTH":50,"HEIGHT":20,"VALUE":"Ramp")
  104. 1040  ASSIGN @Save_disp TO WIDGET "LABEL";PARENT @Main3,SET ("X":275,"Y":30,"WIDTH":60,"HEIGHT":20,"VALUE":"Config")
  105. 1050  ASSIGN @Text2 TO WIDGET "PRINTER";PARENT @Main3,SET ("X":5,"Y":80,"WIDTH":250,"HEIGHT":200)
  106. 1060  CONTROL @Meter1;SET ("LOW LIMIT":-45,"HIGH LIMIT":+45,"ALARM RANGES":"LOW,HIGH")
  107. 1070  STATUS @Meter1;RETURN ("LOW PEN":Low_pen,"HIGH PEN":High_pen)
  108. 1080  CONTROL @Meter1;SET ("LOW PEN":High_pen,"MIDDLE PEN":Low_pen)
  109. 1090  CONTROL @Meter2;SET ("LOW LIMIT":5,"HIGH LIMIT":95,"ALARM RANGES":"LOW,HIGH")
  110. 1100  STATUS @Meter2;RETURN ("LOW PEN":Low_pen,"HIGH PEN":High_pen)
  111. 1110  CONTROL @Meter2;SET ("LOW PEN":High_pen,"MIDDLE PEN":Low_pen)
  112. 1120  GOSUB Setup_profile
  113. 1130  !
  114. 1140  ! Printer Widget appears in all subpanels.
  115. 1150  !
  116. 1160  ASSIGN @Text TO WIDGET "PRINTER";PARENT @Main,SET ("X":5,"Y":280,"WIDTH":580,"HEIGHT":80)
  117. 1170  !
  118. 1180  ! From here to "Afteron" represents:  ON EVENT @Btn1 GOSUB Servicebtn
  119. 1190  !
  120. 1200  ON EVENT @Slider,"CHANGED" GOSUB Changesetpt
  121. 1210  ON EVENT @Slider,"DONE" GOSUB Changesetpt
  122. 1220  ON EVENT @Slider2,"CHANGED" GOSUB Changesetpt
  123. 1230  ON EVENT @Slider2,"DONE" GOSUB Changesetpt
  124. 1240  ON EVENT @Temp_low,"DONE" GOSUB Change_tlow
  125. 1250  ON EVENT @Temp_high,"DONE" GOSUB Change_thigh
  126. 1260  ON EVENT @Humid_low,"DONE" GOSUB Change_hlow
  127. 1270  ON EVENT @Humid_high,"DONE" GOSUB Change_hhigh
  128. 1280  ON EVENT @Save_me,"ACTIVATED" GOSUB Modify_profile
  129. 1290  ON EVENT @Kill_me,"ACTIVATED" GOSUB Clear_profile
  130. 1300 Afteron:!
  131. 1310  !
  132. 1320  !  Get down to work
  133. 1330  !
  134. 1340  Setpt=23
  135. 1350  Setpt2=30
  136. 1360  Curtemp=0
  137. 1370  Curhumid=10
  138. 1380  Siz=2
  139. 1390  Index=1
  140. 1400  CONTROL @Slider;SET ("VALUE":Setpt)
  141. 1410  CONTROL @Slider2;SET ("VALUE":Setpt2)
  142. 1420  CONTROL @Time;SET ("VALUE":0)
  143. 1430  CONTROL @Temp;SET ("VALUE":Setpt)
  144. 1440  CONTROL @Humid;SET ("VALUE":Setpt2)
  145. 1450  CONTROL @Slope;SET ("VALUE":0)
  146. 1460  CONTROL @Main1;SET ("VISIBLE":1)
  147. 1470  CONTROL @Pulldown1;SET ("SENSITIVE":1)
  148. 1480  CONTROL @Pulldown2;SET ("SENSITIVE":1)
  149. 1490  !
  150. 1500 Gotnewsetpt:!
  151. 1510  Reloop=0
  152. 1520  CONTROL @Disp2;SET ("VALUE":Setpt)
  153. 1530  CONTROL @Disp22;SET ("VALUE":Setpt2)
  154. 1540  Evt=Evt+1
  155. 1550  OUTPUT Buf$ USING Logimage;"#";Evt;": Time = ";TIME$(TIMEDATE);"   Setpoint changed to ";Setpt;" Deg. C,   ";Setpt2;" % Hum."
  156. 1560  CONTROL @Text;SET ("APPEND TEXT":Buf$)
  157. 1570  LOOP
  158. 1580    !
  159. 1590    IF Auto=1 THEN GOSUB Get_next_setpt
  160. 1600    Diff=Setpt-Curtemp
  161. 1610    Diff2=Setpt2-Curhumid
  162. 1620    Noise=Siz*(RND-.5)*2
  163. 1630    Delta=Diff/20+Noise
  164. 1640    Delta2=Diff2/20+Noise
  165. 1650    Curtemp=Curtemp+Delta
  166. 1660    Curhumid=Curhumid+Delta2
  167. 1670    !
  168. 1680    CONTROL @Strip;SET ("POINT LOCATION":I)
  169. 1690    CONTROL @Strip2;SET ("POINT LOCATION":I)
  170. 1700    Points(0)=Curtemp
  171. 1710    Points(1)=Setpt
  172. 1720    I=I+1
  173. 1730    CONTROL @Strip;SET ("VALUES":Points(*))
  174. 1740    CONTROL @Disp1;SET ("VALUE":Curtemp)
  175. 1750    CONTROL @Meter1;SET ("VALUE":Curtemp)
  176. 1760    Points(0)=Curhumid
  177. 1770    Points(1)=Setpt2
  178. 1780    CONTROL @Strip2;SET ("VALUES":Points(*))
  179. 1790    CONTROL @Disp12;SET ("VALUE":Curhumid)
  180. 1800    CONTROL @Meter2;SET ("VALUE":Curhumid)
  181. 1810    !
  182. 1820  EXIT IF Reloop
  183. 1830  END LOOP
  184. 1840  GOTO Gotnewsetpt
  185. 1850  !
  186. 1860 Servicebtn: !
  187. 1870  STATUS @Str1;RETURN ("VALUE":Buf$)
  188. 1880  Setpt=VAL(Buf$)
  189. 1890  Reloop=1
  190. 1900  RETURN
  191. 1910  STOP
  192. 1920 Btn1:! Temperature
  193. 1930  GOSUB Turn_off_setup
  194. 1940  GOSUB Turn_off_humid
  195. 1950  GOSUB Turn_on_temp
  196. 1960  RETURN
  197. 1970 Btn2:! Humidity
  198. 1980  GOSUB Turn_off_setup
  199. 1990  GOSUB Turn_off_temp
  200. 2000  GOSUB Turn_on_humid
  201. 2010  RETURN
  202. 2020 Btn3:!
  203. 2030  GOSUB Turn_off_humid
  204. 2040  GOSUB Turn_off_temp
  205. 2050  GOSUB Turn_on_setup
  206. 2060  RETURN
  207. 2070 Btn4:! Manual
  208. 2080  Auto=0
  209. 2090  STATUS @Strip;RETURN ("VISIBLE":Temp_vis)
  210. 2100  STATUS @Strip2;RETURN ("VISIBLE":Humid_vis)
  211. 2110  CONTROL @Slider2;SET ("VALUE":Setpt2)
  212. 2120  CONTROL @Slider;SET ("VALUE":Setpt)
  213. 2130  IF Temp_vis THEN CONTROL @Slider;SET ("VISIBLE":1)
  214. 2140  IF Humid_vis THEN CONTROL @Slider2;SET ("VISIBLE":1)
  215. 2150  RETURN
  216. 2160 Btn5:!
  217. 2170  Auto=1
  218. 2180  CONTROL @Slider;SET ("VISIBLE":0)
  219. 2190  CONTROL @Slider2;SET ("VISIBLE":0)
  220. 2200  Index=1
  221. 2210  Time_start=TIMEDATE
  222. 2220  RETURN
  223. 2230 Btn6:!
  224. 2240  Auto=1
  225. 2250  CONTROL @Slider;SET ("VISIBLE":0)
  226. 2260  CONTROL @Slider2;SET ("VISIBLE":0)
  227. 2270  RETURN
  228. 2280  !
  229. 2290 Turn_off_temp:!
  230. 2300  CONTROL @Main1;SET ("VISIBLE":0)
  231. 2310  RETURN
  232. 2320 Turn_off_humid:!
  233. 2330  CONTROL @Main2;SET ("VISIBLE":0)
  234. 2340  RETURN
  235. 2350 Turn_on_temp:!
  236. 2360  CONTROL @Main1;SET ("VISIBLE":1)
  237. 2370  IF (Auto=0) THEN CONTROL @Slider;SET ("VISIBLE":1)
  238. 2380  RETURN
  239. 2390 Turn_on_humid:!
  240. 2400  CONTROL @Main2;SET ("VISIBLE":1)
  241. 2410  IF (Auto=0) THEN CONTROL @Slider2;SET ("VISIBLE":1)
  242. 2420  RETURN
  243. 2430 Turn_off_setup:!
  244. 2440  CONTROL @Main3;SET ("VISIBLE":0)
  245. 2450  RETURN
  246. 2460 Turn_on_setup:!
  247. 2470  CONTROL @Main3;SET ("VISIBLE":1)
  248. 2480  STATUS @Meter1;RETURN ("LOW LIMIT":Low_lim,"HIGH LIMIT":High_lim)
  249. 2490  CONTROL @Temp_low;SET ("VALUE":Low_lim)
  250. 2500  CONTROL @Temp_high;SET ("VALUE":High_lim)
  251. 2510  STATUS @Meter2;RETURN ("LOW LIMIT":Low_lim,"HIGH LIMIT":High_lim)
  252. 2520  CONTROL @Humid_high;SET ("VALUE":High_lim)
  253. 2530  CONTROL @Humid_low;SET ("VALUE":Low_lim)
  254. 2540  RETURN
  255. 2550 Changesetpt:!
  256. 2560  IF Auto=0 THEN
  257. 2570    STATUS @Slider;RETURN ("VALUE":Setpt)
  258. 2580    STATUS @Slider2;RETURN ("VALUE":Setpt2)
  259. 2590    CONTROL @Disp2;SET ("VALUE":Setpt)
  260. 2600    CONTROL @Disp22;SET ("VALUE":Setpt2)
  261. 2610    Evt=Evt+1
  262. 2620    OUTPUT Buf$ USING Logimage;"#";Evt;": Time = ";TIME$(TIMEDATE);"   Setpoint changed to ";Setpt;" Deg. C, ";Setpt2;" % Hum."
  263. 2630    CONTROL @Text;SET ("APPEND TEXT":Buf$)
  264. 2640  END IF
  265. 2650  RETURN
  266. 2660 Change_tlow:!
  267. 2670  STATUS @Temp_low;RETURN ("VALUE":Low_tlim)
  268. 2680  CONTROL @Disp1;SET ("LOW LIMIT":Low_tlim)
  269. 2690  CONTROL @Meter1;SET ("LOW LIMIT":Low_tlim)
  270. 2700  RETURN
  271. 2710 Change_thigh:!
  272. 2720  STATUS @Temp_high;RETURN ("VALUE":High_tlim)
  273. 2730  CONTROL @Disp1;SET ("HIGH LIMIT":High_tlim)
  274. 2740  CONTROL @Meter1;SET ("HIGH LIMIT":High_tlim)
  275. 2750  RETURN
  276. 2760 Change_hlow:!
  277. 2770  STATUS @Humid_low;RETURN ("VALUE":Low_hlim)
  278. 2780  CONTROL @Disp12;SET ("LOW LIMIT":Low_hlim)
  279. 2790  CONTROL @Meter2;SET ("LOW LIMIT":Low_hlim)
  280. 2800  RETURN
  281. 2810 Change_hhigh:!
  282. 2820  STATUS @Humid_high;RETURN ("VALUE":High_hlim)
  283. 2830  CONTROL @Disp12;SET ("HIGH LIMIT":High_hlim)
  284. 2840  CONTROL @Meter2;SET ("HIGH LIMIT":High_hlim)
  285. 2850  RETURN
  286. 2860 Modify_profile:!
  287. 2870  STATUS @Time;RETURN ("VALUE":Time(Next))
  288. 2880  STATUS @Temp;RETURN ("VALUE":Temp(Next))
  289. 2890  STATUS @Humid;RETURN ("VALUE":Humid(Next))
  290. 2900  STATUS @Slope;RETURN ("VALUE":Ramp(Next))
  291. 2910  OUTPUT Buf$ USING Logimage2;"Time = ";Time(Next);"   Temp=";Temp(Next);" Deg. C, Humid=";Humid(Next);" % Ramp=";Ramp(Next)
  292. 2920  CONTROL @Text2;SET ("APPEND TEXT":Buf$)
  293. 2930  Next=Next+1
  294. 2940  RETURN
  295. 2950 Clear_profile:!
  296. 2960  Next=1
  297. 2970  CONTROL @Text2;SET ("TEXT":"")
  298. 2980  RETURN
  299. 2990 Setup_profile: !
  300. 3000  DATA 0,15,35,55,75
  301. 3010  DATA 10,50,0,-30,23
  302. 3020  DATA 10,90,10,15,20
  303. 3030  DATA 2, 5, 7, 5, 10
  304. 3040  READ Time(1),Time(2),Time(3),Time(4),Time(5)
  305. 3050  READ Temp(1),Temp(2),Temp(3),Temp(4),Temp(5)
  306. 3060  READ Humid(1),Humid(2),Humid(3),Humid(4),Humid(5)
  307. 3070  READ Ramp(1),Ramp(2),Ramp(3),Ramp(4),Ramp(5)
  308. 3080  FOR I=1 TO 5
  309. 3090    OUTPUT Buf$ USING Logimage2;"Time = ";Time(I);"   Temp=";Temp(I);" Deg. C, Humid=";Humid(I);" % Ramp=";Ramp(I)
  310. 3100    CONTROL @Text2;SET ("APPEND TEXT":Buf$)
  311. 3110  NEXT I
  312. 3120  Next=6
  313. 3130  RETURN
  314. 3140 Get_next_setpt: !
  315. 3150  Delta_time=TIMEDATE-Time_start
  316. 3160  Time(Next)=Time(Next-1)+Ramp(Index)+10
  317. 3170  WHILE (Delta_time>Time(Index+1) AND Index<>Next)
  318. 3180    Index=Index+1
  319. 3190  END WHILE
  320. 3200  IF Index=Next THEN
  321. 3210    Auto=0
  322. 3220    DIALOG "INFORMATION","The Temperature/Humidity profile has completed!";SET ("X":200,"Y":300)
  323. 3230    GOTO Btn4
  324. 3240  END IF
  325. 3250  IF (Delta_time<Time(Index)+Ramp(Index) AND Delta_time>Time(Index)) THEN
  326. 3260    IF (Index=1) THEN STATUS @Disp2;RETURN ("VALUE":Foo)
  327. 3270    IF (Index=1) THEN Temp(0)=Foo   ! Cannot put Temp(0) in place of Foo
  328. 3280    IF (Index=1) THEN STATUS @Disp22;RETURN ("VALUE":Foo)
  329. 3290    IF (Index=1) THEN Humid(0)=Foo
  330. 3300    Mult=(Delta_time-Time(Index))/Ramp(Index)
  331. 3310    Setpt=Temp(Index-1)+(Temp(Index)-Temp(Index-1))*Mult
  332. 3320    Setpt2=Humid(Index-1)+(Humid(Index)-Humid(Index-1))*Mult
  333. 3330  ELSE
  334. 3340    Setpt=Temp(Index)
  335. 3350    Setpt2=Humid(Index)
  336. 3360  END IF
  337. 3370  CONTROL @Disp22;SET ("VALUE":Setpt2)
  338. 3380  CONTROL @Disp2;SET ("VALUE":Setpt)
  339. 3390  IF (Setpt<>Prevst) OR (Setpt2<>Prevst2) THEN
  340. 3400    Evt=Evt+1
  341. 3410    OUTPUT Buf$ USING Logimage;"#";Evt;": Time = ";TIME$(TIMEDATE);"   Setpoint changed to ";Setpt;" Deg. C, ";Setpt2;" % Hum."
  342. 3420    CONTROL @Text;SET ("APPEND TEXT":Buf$)
  343. 3430  END IF
  344. 3440  Prevst=Setpt
  345. 3450  Prevst2=Setpt2
  346. 3460  RETURN
  347. 3470 Finis: END
  348.